﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Windows.Forms;
using TuongLaiDangCho.DAO;
using DevExpress.LookAndFeel;
using TuongLaiDangCho.DTO;
//using EnvDTE;

namespace TuongLaiDangCho.Enterface
{
    public partial class frmLogin : DevExpress.XtraEditors.XtraForm
    {
        int numberInvalid;
        int timeLock;
        public frmLogin()
        {
            InitializeComponent();
            lbInvalid.Visible = false;
            //_frmHome = frm1;
            //LoadSkin();
        }
        void LoadLock()
        {
            DataTable dt = UserDAO.LoadLock();
            timeLock = int.Parse(dt.Rows[0]["TimeLock"].ToString());
            numberInvalid = int.Parse(dt.Rows[0]["NumberInvalid"].ToString());
            if (timeLock > 0)
            {
                tmLock.Enabled = true;
                lbInvalid.Visible = true;
                lbInvalid.Text = "Bạn nhập sai mật khẩu nhiều lần bạn phải chờ thêm: " +
                    (timeLock / 60).ToString() + "m" + (timeLock % 60) + "s mới có thể đăng nhập lại";
            }
        }
        //frmHome _frmHome;
        private void frmDangNhap_Load(object sender, EventArgs e)
        {
            LoadLock();
            LoadSkin();
        }
        public void LoadSkin()
        {
            DataTable dt;
            dt = UserDAO.LoadSkin();
            if (dt.Rows.Count>0)
            {
                UserLookAndFeel.Default.SetSkinStyle(dt.Rows[0][0].ToString());
            }
        }

        private void bntLogin_Click(object sender, EventArgs e)
        {
            if (numberInvalid < 5)
            {
                UserDTO user = new UserDTO();
                user.PassWork = txtLogin.Text;
                if (UserDAO.isLogin(user))
                {
                    Program.b_flag = true;
                    numberInvalid = 0;
                    this.Close();
                }
                else
                {
                    lbInvalid.Visible = true;
                    lbInvalid.Text = "Invalid Password";
                    numberInvalid += 1;
                }
            }
            else
            {
                if (timeLock == 0)
                {
                    timeLock = 900;
                    tmLock.Enabled = true;
                    lbInvalid.Visible = true;
                    lbInvalid.Text = "Bạn nhập sai quá 5 lần liên tiếp Phải chờ 15 phút mới có thể đăng nhập lại";
                }
                else
                {
                    //if (!tmLock.Enabled)
                    //{
                    //    tmLock.Enabled = true;
                    //}
                    lbInvalid.Visible = true;
                    lbInvalid.Text = "Bạn nhập sai mật khẩu nhiều lần bạn phải chờ thêm: " +
                        (timeLock / 60).ToString() + "m" + (timeLock % 60) + "s mới có thể đăng nhập lại";
                }

            }
            
        }       

        private void txtLogin_Properties_Click(object sender, EventArgs e)
        {
            lbInvalid.Visible = false;
        }

        private void tmLock_Tick(object sender, EventArgs e)
        {
            if (timeLock > 0)
            {
                timeLock--;
                nfiLogin.Text = "Bạn nhập sai mật khẩu nhiều lần bạn phải chờ thêm: " +
                        (timeLock / 60).ToString() + "m" + (timeLock % 60) + "s";
            }
            else
            {
                numberInvalid = 0;
                tmLock.Enabled = false;
                nfiLogin.BalloonTipText = "Bạn có thể đăng nhập vào chương trình";
                nfiLogin.ShowBalloonTip(5000);
            }
        }

        private void frmLogin_FormClosing(object sender, FormClosingEventArgs e)
        {
            //update timelock
            //update numberInvalid
            //tmLock.Enabled = false;
            UserDTO user = new UserDTO();
            user.NumberInvalid = numberInvalid;
            user.TimeLock = timeLock;
            UserDAO.UpdateLock(user);
        }

        private void nfiLogin_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            if (this.WindowState == FormWindowState.Minimized)
            {
                this.Show();
                this.WindowState = FormWindowState.Normal;
                this.Activate();
                nfiLogin.Visible = false;
            }
        }

        private void frmLogin_Resize(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Minimized)
            {
                nfiLogin.Visible = true;
                this.Hide();
                nfiLogin.BalloonTipText = "Chương trình đã được thu nhỏ xuống khay hệ thống, bạn có thể khôi phục chương trình từ đây";
                nfiLogin.ShowBalloonTip(5000);
            }
            else
            {
                if (this.WindowState == FormWindowState.Normal)
                {
                    nfiLogin.Visible = false;
                }
            }
        }

        private void nfiLogin_BalloonTipShown(object sender, EventArgs e)
        {
            //nfiLogin.Text = "test show tool tip";
        }

        private void showToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Minimized)
            {
                this.Show();
                this.WindowState = FormWindowState.Normal;
                this.Activate();
                nfiLogin.Visible = false;
            }
        }

        private void exitToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void nfiLogin_BalloonTipClicked(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Minimized)
            {
                this.Show();
                this.WindowState = FormWindowState.Normal;
                this.Activate();
                nfiLogin.Visible = false;
            }
        }
       
    }
}